-
Notifications
You must be signed in to change notification settings - Fork 52
Update CVC5 to 1.2.X #454
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update CVC5 to 1.2.X #454
Conversation
@kfriedberger: Could you have a look at the last commit that adds multi-arch support? I've tried it for arm64 with qemu, but I don't have a windows machine to test the binaries. (You'll have to use the repository from the CVC5 pull request here if you want to build the binaries yourself) |
The missing pull request for CVC5 has now been merged and we can build from |
…. See cvc5/cvc5#10426 for the interface. This will solve issue #310.
…ral new library dependencies with patchelf.
…est. The issue seems to have been fixed.
…t to an outdated error message.
…hat were not statically linked
…ponent and significand
…5SolverContext is actually used
We compile for linux on x64 and arm64 and windows on x64 only. CVC5 is also available on MacOS, but there doesn't seem to be a simple way to cross compile. The same is true for windows on arm64.
16fdcb2
to
2abc14d
Compare
This reverts commit 458b8f1 and blacklists one more test. CVC5 still crashes when formulas are shared across multiple threads. Remember to reapply this commit once the issue has been solved upstream.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On first look, this is an impressive PR, and it looks quite good:
- version update of CVC5 ✔️
- arm64-support for CVC5 ✔️
- x64-support for WIndows ❔ (does not yet work)
I will test compilation and different OS soon.
The proof generation/traversal API has changed compared to older versions. Do we include the new API and maybe even a native test for it? If not, can we add that in this PR? It would be helpful for @gcarpio21 s proof interface. |
We compile the "full" API of CVC5, including all new features. I assume that the API changes from your comment refer to plain Java API. This should be done outside of this PR, as it might be independent of native code and low-level bindings. A separate PR would also allow to integrate this PR here soonish, and work on proofs later. |
For the purposes of correctly retrieving proofs from CVC5 I have written a test in the |
If there is just one additional test, then feel free to add it within this PR. |
Update for the Windows build artifact: Improvement (future work, maybe within this PR): Alternative (maybe future work, not part of this PR): |
I added the test |
Ok, that's interesting. CVC5 actually seems to copy the
Those libraries are the Mingw runtime and other solvers that are compiled with Mingw might also need them. Maybe there is a way to include them directly in JavaSMT to avoid conflicts between different versions for different solvers? Alternatively we could also ask the CVC5 developers if they could add an option to statically link the Mingw runtime. |
I've now asked the CVC5 for an option to include the MinGW runtime in static builds: @kfriedberger: |
I’m traveling for work these days and haven’t even read all my emails or had time for proper testing yet (that will happen the next days) 😄 , and there’s already a proposed solution that looks valid (https://gist.github.com/daniel-raffler/6f5c34b2a57380f90f026de0f1c09262) based on my comment and a related PR (cvc5/cvc5#11757) that even further simplifies the build and packaging scripts of CVC5! You all work at an incredible pace -- truly impressive! 🚀 |
Thanks! The PR has now been merged and is already included in the latest CVC5 dailies. I've opened a new branch here that fetches the binaries from the official CVC5 release and repackages them. This saves us quite some on the build and allows us to support macOS on both x64 and arm64 hardware. If you'd like I could still add the commits to this PR. Or we wait and merge the other branch later? |
While Linux ignores a prefix "lib" in so-filenames, Windows requires it if the name of the dll-file has it.
Dependencies are still unclear, i.e. CVC5 does not yet load.
…indows x64, Linux x64 and Linux arm64.
Lets first finish this PR and then take a look at directly including CVC5 from the official webpage (see https://github.com/sosy-lab/java-smt/tree/cvc5-use-official-binaries). |
We can analyse this issue later.
The example projects refer to some release version of JavaSMT and do not yet represent the current development state. Those changes can be applied once JavaSMT had its next release.
Hello everyone,
this PR will update CVC5 to the latest version and rewrites the solver backend to use the new
TermManager
interface. It also changes the build process so that only a single library is produced and all dependencies are statically linked. In addition we added multi-arch support for linux on arm64 and windows on x64.There were some issues in CVC5 that had to be fixed and we're still waiting on cvc5/cvc5#11730 before this can be merged.